package com.example.mapper;

import com.example.dto.Category;
import com.example.dto.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <P> @Author: SongKeCheng
 * <P> Description:
 * <P> Type: Interface mybatisx
 * <P> Date: 2024/7/13:15:34
 */

public interface GoodsMapper {
    /**
     * 查询所以商品信息
     */
    public List<Goods> allGoods();

    /**
     * 使用map作为入参 根据id和作者查询数据
     */
    public Goods findByIdAndAuthor(Map<String, Object> map);

    /**
     * 使用对象作为入参  根据id和作者查询数据
     */
    public Goods findByIdAndAuthorObj(Goods goods);

    //添加商品
    public int addGoods(Goods goods);

    public int updateGoods(Goods goods);

    //删除商品
    public int deleteGoods(int id);

    //分页查询 #{index},#{pageSize} @Para为参数取别名
    public List<Goods> findByPage(@Param("index") Integer index,
                                  @Param("pageSize") Integer pageSize);

    /**
     * 查询商品 返回分类学ixn
    */
    public Goods findGoodsAndCategoryById(int id);
    /**
     * 根据id 查询商品分类
     */
    public Category findCategoryById(Integer id);

    /**
     * 根据条件查询 使用if标签
    */
    public List<Goods> findNoOrMore(Goods goods);
    /**
     * 根据条件查询 使用where标签
     */
    public List<Goods> findNoOrMoreByWhere(Goods goods);
    /**
     * 根据条件查询 使用choose标签 同 switch case
    */
    public List<Goods> findByNameOrAuthor(Goods goods);
    /**
     * 根据 id 更新 状态 使用 foreach  标签
    */
    public int updateGoodsStatusIn(Map<String, Object> map);
    /**
     * 根据 id 更新 状态 使用 foreach  标签
     */
    public int updateGoodsStatusOr(Map<String, Object> map);


}
